#!/usr/bin/env python
"""
为现有学院分配学部的脚本
"""
import os
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'educational_system.settings')
django.setup()

from apps.accounts.models import Department, College

def assign_departments():
    """为现有学院分配学部"""
    print("=== 为学院分配学部 ===")
    
    # 获取所有学部
    departments = {dept.name: dept for dept in Department.objects.all()}
    
    # 学院到学部的映射（根据学院名称智能分配）
    college_department_mapping = {
        '计算机科学与技术学院': 'engineering',
        '电子信息工程学院': 'engineering', 
        '机械工程学院': 'engineering',
        '数学与统计学院': 'science',
        '物理与材料学院': 'science',
        '经济管理学院': 'economics',
        '外国语学院': 'humanities',
        '艺术设计学院': 'humanities',
    }
    
    updated_count = 0
    for college in College.objects.filter(department__isnull=True):
        # 根据学院名称分配学部
        department_name = college_department_mapping.get(college.name, 'management')  # 默认分配到管理学部
        department = departments.get(department_name)
        
        if department:
            college.department = department
            college.save()
            updated_count += 1
            print(f"✓ 为学院 '{college.name}' 分配学部：{department.get_name_display()}")
        else:
            print(f"✗ 未找到学部：{department_name}")
    
    print(f"\n总共为 {updated_count} 个学院分配了学部")
    
    # 显示当前学院学部分配情况
    print("\n=== 当前学院学部分配情况 ===")
    for college in College.objects.all().order_by('department__name', 'name'):
        department_name = college.department.get_name_display() if college.department else '未分配'
        print(f"学院：{college.name} ({college.code}) - 学部：{department_name}")

if __name__ == '__main__':
    assign_departments()